;
; KING.SH Version 1.01 (C)1995,1996 HUDSON SOFT
; HuC6272(KING)関連 アセンブラ用ヘッダーファイル(KING.SH)
;
	ifndef	_KING_SH_
_KING_SH_	equ	1
;
PAGE_SCSI	equ	0	;機能ブロックの定義
PAGE_BG		equ	4
PAGE_KS		equ	8
PAGE_KR		equ	12
;
KRAM_PAGE0	equ	0	;PAGEの定義
KRAM_PAGE1	equ	1
;
KING_RASTER_IRQ_OFF	equ	0
KING_RASTER_IRQ_ON	equ	2
KR_TRANS_OFF	equ	0
KR_TRANS_ON	equ	1
;
;--- Macros
;
	include	"c62dev.sh"
;
_put_king_ar	macro	regno
		mov.w	regno,at
		out.h	at,IO_KING_AR(zero)
		endm
;
_get_king_sr	macro	reg
		in.h	IO_KING_SR(zero),reg
		endm
;
_get_king_srl	macro	reg
		in.h	IO_KING_SRL(zero),reg
		endm
;
_get_king_srh	macro	reg
		in.h	IO_KING_SRH(zero),reg
		endm
;
_get_king_srw	macro	reg
		in.w	IO_KING_SR(zero),reg
		endm
;
_put_king_dr	macro	value
		mov.h	value,at
		out.h	at,IO_KING_DR(zero)
		endm
;
_put_king_drl	macro	value
		mov.h	value,at
		out.h	at,IO_KING_DRL(zero)
		endm
;
_put_king_drh	macro	value
		mov.h	value,at
		out.h	at,IO_KING_DRH(zero)
		endm
;
_put_king_drw	macro	value
		mov.w	value,at
		out.w	at,IO_KING_DR(zero)
		endm
;
_get_king_dr	macro	reg
		in.h	IO_KING_DR(zero),reg
		endm
;
_get_king_drl	macro	reg
		in.h	IO_KING_DRL(zero),reg
		endm
;
_get_king_drh	macro	reg
		in.h	IO_KING_DRH(zero),reg
		endm
;
_get_king_drw	macro	reg
		in.w	IO_KING_DR(zero),reg
		endm
;
_kar		macro	reg
		out.h	reg,IO_KING_AR(zero)
		endm
;
_kari		macro	regno
		mov.h	regno,at
		out.h	at,IO_KING_AR(zero)
		endm
;
_ksr		macro	reg
		in.h	IO_KING_SR(zero),reg
		endm
;
_ksrl		macro	reg
		in.h	IO_KING_SRL(zero),reg
		endm
;
_ksrh		macro	reg
		in.h	IO_KING_SRH(zero),reg
		endm
;
_ksrw		macro	reg
		in.w	IO_KING_SR(zero),reg
		endm
;
_kdr		macro	reg
		out.h	reg,IO_KING_DR(zero)
		endm
;
_kdri		macro	value
		mov.h	value,at
		out.h	at,IO_KING_DR(zero)
		endm
;
_kdrl		macro	reg
		out.h	reg,IO_KING_DRL(zero)
		endm
;
_kdrli		macro	value
		mov.h	value,at
		out.h	at,IO_KING_DRL(zero)
		endm
;
_kdrh		macro	reg
		out.h	reg,IO_KING_DRH(zero)
		endm
;
_kdrhi		macro	value
		mov.h	value,at
		out.h	at,IO_KING_DRH(zero)
		endm
;
_kdrw		macro	reg
		out.w	reg,IO_KING_DR(zero)
		endm
;
_kdriw		macro	value
		mov.w	value,at
		out.w	at,IO_KING_DR(zero)
		endm
;
_kdrr		macro	reg
		in.h	IO_KING_DR(zero),reg
		endm
;
_kdrrl		macro	reg
		in.h	IO_KING_DRL(zero),reg
		endm
;
_kdrrh		macro	reg
		in.h	IO_KING_DRH(zero),reg
		endm
;
_kdrrw		macro	reg
		in.w	IO_KING_DR(zero),reg
		endm
;
;--- Structs
;
BGPRM		struct
kbgmode:	ds	2
kbgpri:		ds	2
sscr:		ds	2
size0:		ds	2
size1:		ds	2
size2:		ds	2
size3:		ds	2
	align	4
		ends
;
BGCGADR		struct
bat0:		ds	2
cg0:		ds	2
sbat0:		ds	2
scg0:		ds	2
bat1:		ds	2
cg1:		ds	2
bat2:		ds	2
cg2:		ds	2
bat3:		ds	2
cg3:		ds	2
	align	4
		ends
;
BGSCRL		struct
bsx0:		ds	2
bsy0:		ds	2
bsx1:		ds	2
bsy1:		ds	2
bsx2:		ds	2
bsy2:		ds	2
bsx3:		ds	2
bsy3:		ds	2
	align	4
		ends
;
AFIN		struct
afina:		ds	2
afinb:		ds	2
afinc:		ds	2
afind:		ds	2
afinx:		ds	2
afiny:		ds	2
	align	4
		ends
;
KR		struct
krstart		ds	4
krraster	ds	2
krblock		ds	2
	align	4
		ends
;
KS		struct
ksmode		ds	2
kscr0		ds	2
kscr1		ds	2
ksstart0	ds	2
ksend0		ds	4
kshalf0		ds	2
ksstart1	ds	2
ksend1		ds	4
kshalf1		ds	2
	align	4
		ends
;
KINGREG		struct
kr_cr		ds	2
kraster_count	ds	2
	align	4
		ends
;
	globl	init_king
	globl	set_kram_page,set_kram_radr,set_kram_wadr
	globl	get_kram_cradr,get_kram_cwadr
	globl	write_kram_datas,read_kram_datas
	globl	fill_kram,fill_kramp
	globl	mram_to_kram,kram_to_mram
	globl	set_bg_prams,set_bgcg_adrs,set_bg_scrls,set_bg_afins
	globl	write_mp,enable_mp,disable_mp
	globl	set_kr_pram,set_kr_trans
	globl	set_king_raster_count,set_king_raster_irq
	globl	set_ks_pram
;
	endif	; !_KING_SH_
